/**
 * Coryright 2015-2020 www.eyaomall.cn
 * All rights reserved.
 * @author huwenqing
 * @date 2016年10月17日
 */
package com.eyaomall.wxmall.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.eyaomall.wxmall.common.helper.MemberHelper;
import com.eyaomall.wxmall.model.po.Coupon;
import com.eyaomall.wxmall.model.po.CouponGoods;
import com.eyaomall.wxmall.model.po.CouponMember;
import com.eyaomall.wxmall.model.vo.CouponVO;
import com.lycheeframework.core.annotation.NameSpace;
import com.lycheeframework.core.support.DaoSupport;

/**
 * 优惠券DAO
 * 
 * @author huwenqing
 * @date 2016年10月17日
 */
@NameSpace("coupon")
@Repository
public class CouponDao extends DaoSupport<Coupon> {

	/**
	 * 查询我的优惠券
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<Coupon> listMyCoupon(CouponVO couponVO) {
		couponVO.setMemberId(MemberHelper.getId());
		couponVO.setShopId(MemberHelper.getShopId());

		return super.list("listMy", couponVO);
	}
	
	/**
	 * 查询我的优惠券
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<CouponGoods> listCouponGoods(CouponVO couponVO) {

		return super.list("listByGoods", couponVO);
	}
	
	/**
	 * 根据邮回去ID查询我的优惠券产品关系
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List<CouponGoods> listGoodsById(CouponVO couponVO) {

		return super.list("listById", couponVO);
	}

	/**
	 * 根据优惠券ID查询我的优惠券详情
	 * 
	 * @param couponId
	 * @return
	 */
	public Coupon queryMyCouponDetail(Integer couponId) {
		Map<String, Object> data = new HashMap<String, Object>();
		data.put("memberId", MemberHelper.getId());
		data.put("couponId", couponId);

		return (Coupon) super.query("queryMy", data);
	}
	
	/**
	 * 根据优惠券ID查询我的优惠券详情
	 * 
	 * @param couponId
	 * @return
	 */
	public Coupon queryMyGetDetail(Integer couponId) {
		Map<String, Object> data = new HashMap<String, Object>();
		data.put("memberId", MemberHelper.getId());
		data.put("couponId", couponId);

		return (Coupon) super.query("queryGet", data);
	}

	/**
	 * 查询优惠券产品
	 * 
	 * @return
	 */
	public CouponGoods queryCouponGoods(Integer couponId) {
		Map<String, Object> data = new HashMap<String, Object>();
		data.put("couponId", "couponId");

		return (CouponGoods) super.query("queryByGoods", data);
	}

	/**
	 * 领取优惠券
	 * 
	 * @param id
	 * @return
	 */
	public int update(Coupon coupon) {

		return super.update("updateById", coupon);
	}

	/**
	 * 通过ID查询
	 * 
	 * @param coupon
	 * @return
	 */
	public Coupon queryById(Integer id) {
		Coupon coupon = new Coupon();
		coupon.setId(id);
		
		return (Coupon) super.query(coupon);
	}

	/**
	 * 新增优惠券会员关系
	 * 
	 * @param couponMember
	 * @return
	 */
	public Integer addCouponMember(CouponMember couponMember) {
		super.insert("createCouponMember", couponMember);

		return couponMember.getId();
	}

	/**
	 * 修改我的优惠券会员关系
	 * 
	 * @param couponId
	 * @param memberId
	 * @param status
	 * @return
	 */
	public boolean updateCouponMember(Integer couponId, Integer memberId, String status) {
		CouponMember couponMember = new CouponMember();
		couponMember.setCouponId(couponId);
		couponMember.setMemberId(memberId);
		couponMember.setStatus(status);

		return super.update("updateCouponMember", couponMember) > 0 ? true : false;
	}
}
